// pages/knowledge/knowledge.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    selectedSubjects: [], // 用户选择的科目列表
    currentSubjectId: '', // 当前选中的科目ID
    knowledgeList: [], // 知识点列表
    loading: false, // 是否加载中
    errorMsg: '' // 错误信息
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.loadUserSubjects();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 每次显示页面时重新加载用户科目
    this.loadUserSubjects();
  },

  /**
   * 加载用户选择的科目
   */
  loadUserSubjects: function () {
    // 先从本地存储获取
    const localSubjects = wx.getStorageSync('selectedSubjectList') || [];

    if (localSubjects.length > 0) {
      this.setData({
        selectedSubjects: localSubjects,
        currentSubjectId: localSubjects[0]?.id || ''
      });
      // 如果有科目，默认加载第一个科目的知识点
      if (this.data.currentSubjectId) {
        this.loadKnowledgeList(this.data.currentSubjectId);
      }
    }

    // 从服务器获取用户科目
    this.fetchUserSubjectsFromServer();
  },

  /**
   * 从服务器获取用户科目
   */
  fetchUserSubjectsFromServer: function () {
    const app = getApp();
    wx.request({
      url: app.globalData.baseUrl + '/frontend/getUserSubjects',
      method: 'GET',
      header: {
        'content-type': 'application/json',
        'token': wx.getStorageSync('userToken') || ''
      },
      success: (res) => {
        if (res.data && res.data.code === 200 && Array.isArray(res.data.data)) {
          const subjects = res.data.data;
          // 更新本地存储
          wx.setStorageSync('selectedSubjectList', subjects);

          // 更新页面数据
          if (subjects.length > 0) {
            const newCurrentSubjectId = this.data.currentSubjectId || subjects[0].id;
            this.setData({
              selectedSubjects: subjects,
              currentSubjectId: newCurrentSubjectId,
              errorMsg: ''
            });

            // 加载对应科目的知识点
            this.loadKnowledgeList(newCurrentSubjectId);
          } else {
            this.setData({
              selectedSubjects: [],
              currentSubjectId: '',
              knowledgeList: [],
              errorMsg: '您还没有选择科目，请先去选择科目'
            });
          }
        }
      },
      fail: (err) => {
        console.error('获取用户科目失败:', err);
        // 失败时不覆盖已有数据，只显示错误提示
        if (this.data.selectedSubjects.length === 0) {
          this.setData({
            errorMsg: '网络错误，请重试'
          });
        }
      }
    });
  },

  /**
   * 加载知识点列表
   */
  loadKnowledgeList: function (subjectId) {
    if (!subjectId) return;

    this.setData({
      loading: true,
      errorMsg: ''
    });

    // 模拟获取知识点数据（实际应该调用后端API）
    setTimeout(() => {
      // 模拟知识点数据
      const mockKnowledgeList = [
        { id: 1, name: '第一章 基础知识', count: 15 },
        { id: 2, name: '第二章 核心概念', count: 20 },
        { id: 3, name: '第三章 进阶技巧', count: 18 },
        { id: 4, name: '第四章 实战应用', count: 12 },
        { id: 5, name: '第五章 综合测试', count: 25 }
      ];

      this.setData({
        knowledgeList: mockKnowledgeList,
        loading: false
      });
    }, 500);
  },

  /**
   * 切换科目
   */
  switchSubject: function (e) {
    const subjectId = e.currentTarget.dataset.subjectId;
    this.setData({
      currentSubjectId: subjectId
    });
    this.loadKnowledgeList(subjectId);
  },

  /**
   * 点击知识点项
   */
  onKnowledgeItemClick: function (e) {
    const knowledgeId = e.currentTarget.dataset.id;
    const knowledgeName = e.currentTarget.dataset.name;

    // 跳转到题目列表或详情页面
    wx.navigateTo({
      url: `/pages/dati/dati?subjectId=${this.data.currentSubjectId}&knowledgeId=${knowledgeId}&knowledgeName=${encodeURIComponent(knowledgeName)}`
    });
  },

  /**
   * 返回选择科目页面
   */
  goBackToSelectSubjects: function () {
    wx.navigateTo({
      url: '../knowledge-select/knowledge-select'
    });
  }
});